package com.sunkai.math;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MeunTypeDemo {
	
	
	public static List<MenuTypes> x(List<MenuTypes> menuTypes){
		Map<Integer, List<MenuTypes>> groups = new HashMap<Integer, List<MenuTypes>>();
		
		for (MenuTypes menuType : menuTypes) {
			int pid = menuType.pid;
			List<MenuTypes>menuTypes2=groups.get(pid);
			if(menuTypes2 == null){
				menuTypes2 = new ArrayList<MenuTypes>();
				groups.put(pid, menuTypes2);
			}
			menuTypes2.add(menuType);
			
		}
		List<MenuTypes> pMenuTypes = groups.get(0);
		List<MenuTypes> queues = new ArrayList<MenuTypes>();
		queues.addAll(pMenuTypes);
		
		for (int i = 0; i < queues.size(); i++) {
			MenuTypes pmenuType = queues.get(i);
			int pid = pmenuType.id;
			List<MenuTypes> subMenuTypes = groups.get(pid);
			if(subMenuTypes!=null){
				pmenuType.addAll(subMenuTypes);
				queues.addAll(subMenuTypes);
			}
		}
		return pMenuTypes;
	}
	
	public static void main(String[] args) {
		List<MenuTypes> menuTypes = new ArrayList<MenuTypes>();
		menuTypes.add(new MenuTypes(1, 0));
		menuTypes.add(new MenuTypes(2, 0));
		menuTypes.add(new MenuTypes(3, 0));
		menuTypes.add(new MenuTypes(4, 0));
		
		menuTypes.add(new MenuTypes(100, 1));
		menuTypes.add(new MenuTypes(101, 1));
		menuTypes.add(new MenuTypes(102, 1));
		menuTypes.add(new MenuTypes(200, 2));
		menuTypes.add(new MenuTypes(201, 2));
		menuTypes.add(new MenuTypes(300, 3));
		menuTypes.add(new MenuTypes(301, 3));
		menuTypes.add(new MenuTypes(400, 4));
		menuTypes.add(new MenuTypes(401, 4));
		
		menuTypes.add(new MenuTypes(4010, 401));
		menuTypes.add(new MenuTypes(4011, 401));
		
		System.out.println(x(menuTypes));
		
	}
}
